/**
 * 自定义yeomen generator
 * 根据 create-react-app 提供的模版文件初始化项目结构
 * 根据命令行cli接收到的数据来填充模版文件
 */
const Generator = require('yeoman-generator');

module.exports = class extends Generator {
    /**
     * 命令行交互
     */
    prompting() {
        return this.prompt([{
            type: 'input',
            name: 'name',
            message: 'Your project name',
            default: this.appname,
        }]).then(answers => {
            this.answers = answers;
        })
    }

    /**
     * Yeoman 自动生成文件阶段调用此方法
     */
    writing() {
        const templates = [
            'README.md',
            'package.json',
            '.gitignore',
            'public/favicon.ico',
            'public/index.html',
            'public/logo192.png',
            'public/logo512.png',
            'public/manifest.json',
            'public/robots.txt',
            'src/App.css',
            'src/App.js',
            'src/App.test.js',
            'src/index.css',
            'src/index.js',
            'src/logo.svg',
            'src/serviceWorker.js',
            'src/setupTests.js',
        ];

        templates.forEach(item => {
            this.fs.copyTpl(
                this.templatePath(item),
                this.destinationPath(item),
                this.answers,
            )
        })
    }
}